package com.best.oasis.settlement.service.security;

import java.util.List;

import com.best.oasis.settlement.common.entity.security.Role;
import com.best.oasis.settlement.common.so.security.RoleSO;
import com.best.oasis.settlement.common.vo.security.CheckedRoleTreeVO;
import com.best.oasis.settlement.common.vo.security.RoleGroupVO;
import com.best.oasis.settlement.common.vo.security.RoleVO;
import com.best.oasis.settlement.service.base.BaseService;
import com.best.oasis.util.tree.TreeNode;

public interface RoleService extends BaseService<Role, RoleVO, Long>{
	  
	public TreeNode getTree(Long groupId);
	public List<RoleVO> getAll(RoleSO so);
	/**
	 * 获取当前登录用户的数据权限角色中父节点的name为parentRoleName的角色列表
	 * @param parentRoleName
	 * @return 成功返回角色列表，没有数据返回空的列表
	 */
	public List<Role> getCurrentUserDataPrivilegeRoles(String parentRoleName);
	/**
	 * 获取当前角色组内的权限所构成的树
	 * @param roleGroupVo
	 * @return 成功返回权限树，没有数据返回空的列表
	 */	
	public TreeNode buildSelectedRoleTree(RoleGroupVO roleGroupVo);
	/**
	 * 从数据库中把全部的Role数据取出，然后创建一颗树
	 * 重新计算获得被选中的角色
	 * @param groupId
	 */
	public CheckedRoleTreeVO getCheckedRoleTree(Long groupId);
	
	/**
	 * 根据role的id，去查找roleGroup_role表里有没有数据
	 * 		有，返回true
	 * 		无，false
	 */
	public boolean checkByRole(Long roleId);
	/**
	 * 根据用户ID，查找所有的Role
	 */
	public List<RoleVO> getRolesByUserID(Long userID);
	/**
	 * 根据roleGroupID，获得所有的role
	 */
	public List<RoleVO> getRolesByRoleGroupId(Long id);
}
